Actividad formativa de doctorado de la Universidad de Alcalá
Gran parte de la información y figuras de esta sesión ha sido obtenida de la nota ecoinformática: Astigarraga, J. & Cruz-Alonso, V. (en prensa). “¡Se puede entender cómo funcionan Git y GitHub!”. Ecosistemas.
Reproducibilidad (https://the-turing-way.netlify.app/reproducible-research/overview/overview-definitions.html)
Método científico
Big data
R Markdown (https://rmarkdown.rstudio.com)
Git (https://git-scm.com/)
GitHub (https://github.com/)
Problemas comunes:
- Sobreescritura de un archivo
- Versiones finales infinitas
- Trabajo por error en una versión que no era la final
- Creación de copias “en conflicto” cuando dos personas trabajan a la vez
- Ediciones sin control de cambios
R Markdown es un formato de archivo para crear documentos dinámicos con R
Escrito en markdown y contiene partes de código de R (o algún otro lenguaje de programación) integrado
Fue diseñado para facilitar la reproducibilidad
Se apoya en knitr (https://yihui.org/knitr/) y Pandoc (https://pandoc.org/)
Otras razones para trabajar en R Markdown: aumento de la eficiencia de trabajo (a medio-largo plazo), producción de documentos de alta calidad, etc.
Para crear un archivo R Markdown: File -> New File -> R Markdown. Estos archivos tienen 3 componentes principales: (i) metadatos, (ii) texto, (iii) código
Metadatos: se escribe entre `---` (al comienzo del archivo). Utiliza la sintaxis de YAML. La sangría es importante!
Texto: sintaxis Markdown
2 tipos de código:
Code chunk (trozo de código): se escribe entre ```{r}```; r indica el lenguaje (atajo: Ctrl + Alt + I)
Inline (en línea): se escribe entre `r`
Para compilar un archivo R Markdown se utiliza el botón de “Knit” de RStudio (atajo: Ctrl + Shift + K). También se puede hacer mediante código: rmarkdown::render(“intro_repro.Rmd”, output_dir = “output”)
Para buscar ayuda: Help -> Markdown Quick Reference (italics, bold, headers, lists, links, images, R codes, tables, page break, superscripts…)
negrita, cursiva, subíndice1, superíndice2, codes, hypervínculo, notas al pie1
Títulos (# primer nivel; ## segundo nivel…), listas y sublistas (*, -, +),
“R Markdown es maravilloso”
— Julen Astigarraga
\(f(how) = {do \choose you} feel^{excellent} (1-p)^{n-k}\)
⚡ Cambia al Visual markdown editing mode mediante el botón del compás
Para analizar las múltiples opciones de chunk (Ctrl + Alt + I): https://bookdown.org/yihui/rmarkdown/r-code.html
Crea un archivo R Markdown, ponle un título, añade un texto, crea un plot (
Ctrl + Alt + I) y compila al formato HTML (“Knit”)
Git es un sistema avanzado de control de versiones distribuido
Permite “rastrear” el progreso de un proyecto a lo largo del tiempo haciendo “capturas” del mismo
Permite ver qué cambios se hicieron, quién los hizo y por qué, e incluso volver a versiones anteriores
Facilita el trabajo en paralelo de varios participantes
Sistemas de control de versiones centralizados: p. ej. Subversion (SVN, https://subversion.apache.org/) y Concurrent Versions System (CVS, http://cvs.nongnu.org/))
Otras alternativas de control de versiones distribuidos: p. ej. Mercurial (https://www.mercurial-scm.org/) y Bazaar (https://bazaar.canonical.com/)
GitHub es un servidor de alojamiento en línea o repositorio remoto para albergar proyectos basados en Git
Un repositorio es un directorio donde desarrollar un proyecto
Ventajas de utilizar GitHub: permite compartir proyectos entre distintos usuarios, proporciona la seguridad de la nube, etc.
GitHub contiene la copia principal del proyecto
Otros repositorios remotos similares a GitHub: p. ej. GitLab (https://gitlab.com/) y Bitbucket (https://bitbucket.org/)
En este punto es necesario que tengas instalada la versión más reciente de R (https://cloud.r-project.org/), RStudio (https://www.rstudio.com/products/rstudio/download/), Git (https://happygitwithr.com/install-git.html) y una cuenta en GitHub (https://github.com/) creada.
En el shell, preséntate a Git (Chapter 7: Git-Intro)
⚡ ¿Qué es el shell? El shell (o terminal) es un programa en tu ordenador cuyo trabajo es ejecutar otros programas (ver https://happygitwithr.com/shell.html#shell). También veremos cómo hacerlo a través de un cliente como RStudio (https://www.rstudio.com/).
Tools -> Shell
git config --global user.name 'Nombre Apellido'
git config --global user.email 'nombre@ejemplo.com'
Compueba que has instalado Git correctamente:
git --version
Para ver el usuario utilizado para configurar Git:
git config user.name
Para ver a qué cuenta de correo está asociado Git:
git config user.email
Para ver tanto el usuario como el correo asociado:
git config --global --list
Un repositorio es como un “contenedor” donde desarrollar un proyecto.
Para crear un repositorio en GitHub: “New”. Aquí se indica el nombre, una pequeña descripción, y si quieres que sea público o privado. Se recomienda iniciar el repositorio con un archivo “README” (Initialize this repository with a README) para recoger cualquier información esencial para el uso del repositorio (estructura, descripción más detallada del contenido, etc.).
En R, creamos un nuevo proyecto y lo conectamos al repositorio: File -> New project -> Version control -> Git -> copiar el URL del repositorio que hemos creado de GitHub (está en la página principal de nuestro repositorio, en “clone or download”). Seleccionamos el directorio donde queremos guardar el proyecto y pulsamos en “Create project”.
Si vamos al directorio seleccionado, encontraremos la carpeta conectada a Git y GitHub que hemos creado en nuestro ordenador. Podemos copiar aquí todos los archivos que nos interesan para el proyecto (datos, imágenes, etc).
Crea un repositorio en GitHub y conecta a un nuevo proyecto de RStudio (esto generará un repositorio (carpeta) en tu ordenador en la ubicación que le hayas especificado)
Copia el archivo de R Markdown que has creado en el Ejercicio 1 en el directorio de trabajo (es decir, copia el archivo R Markdown y guárdalo dentro del repositorio que has creado)
En RStudio ve a la pestaña Git (donde está el environment) para ver todos los documentos que han sido identificados por Git
Git es capaz de rastrear todos los archivos contenidos en un repositorio. Hay cuatro “zonas” de trabajo:
Directorio de trabajo (working directory): es donde se está trabajando. Esta zona se sincroniza con los archivos locales del ordenador.
Área de preparación (staging area o Index): es la zona intermedia entre el directorio de trabajo y el repositorio local de Git. Es la zona de borradores. El usuario debe seleccionar los archivos que se van a registrar en la siguiente “captura” de Git.
Repositorio local (local repository o HEAD): es donde se registran todos los cambios capturados por Git en tu ordenador.
Repositorio remoto (remote repository): es donde se registran todos los cambios capturados por Git en la nube (GitHub).
Al principio todos los cambios realizados están en amarillo porque Git no sabe que hacer con ellos. Estamos en el directorio de trabajo y puede que no nos interese guardar todos los cambios para el futuro.
git add <nombre de archivo>: para añadir una actualización de algún archivo del directorio de trabajo al área de preparación. Indica a Git que se quieren incluir las actualizaciones de algún archivo en la próxima “captura” del proyecto y que Git las registre. Sin embargo, git add no afecta al repositorio local.
git status: para ver el estado del directorio de trabajo y del área de preparación. Este comando permite ver qué archivos están siendo rastreados por Git, qué cambios han sido añadidos al área de preparación (staged) y qué archivos están siendo registrados por Git.
git commit -m "mensaje corto y descriptivo": para registrar los cambios que nos interesen. Al ejecutar git commit se hace una “captura” del estado del proyecto. Junto con el commit se añade un mensaje con una pequeña explicación de los cambios realizados y por qué (p. ej. “incluyo las referencias en el formato de Ecosistemas”). Cada git commit tiene un SHA (Secure Hash Algorithm) que es un código alfanumérico que identifica inequívocamente ese commit (p. ej. 1d21fc3c33cxxc4aeb7823400b9c7c6bc2802be1). Parece difícil de entender, pero no te preocupes, sólo tienes que recordar los siete primeros dígitos 1d21fc3 🤯 (es broma). Con el SHA siempre se pueden ver los cambios que se hicieron en ese commit y volver a esa versión fácilmente.
git push: para subir los cambios que hemos hecho a GitHub y quedarán visibles para nuestros colaboradores.
git pull: para descargar todas las actualizaciones que haya en GitHub (nuestras o de nuestros colaboradores), que se fusionarán (merge) con el último commit en nuestro repositorio local.
En el proyecto de cada equipo, guardad y subid a GitHub los cambios realizados en el Ejercicio 3 (
git add+git commit+git push)
Información más detallada de los temas tratados en esta sesión
R Markdown
Ciencia reproducible
Control de versiones (Git)
Integrar Git, GitHub y RStudio
Enseñar y aprender con GitHub
Session Info
Sys.time()
[1] "2022-01-12 09:52:54 CET"
git2r::repository()
Local: main C:/Users/julen/OneDrive/Escritorio/GitHub-col/intro_git-github
Remote: main @ origin (https://github.com/Julenasti/intro_git-github.git)
Head: [c5465fc] 2022-01-05: parte avanzada ramas html
R version 4.0.5 (2021-03-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
loaded via a namespace (and not attached):
[1] Rcpp_1.0.7 knitr_1.36 magrittr_2.0.1
[4] downlit_0.2.1 R6_2.5.0 rlang_0.4.11
[7] stringr_1.4.0 tools_4.0.5 xfun_0.22
[10] jquerylib_0.1.4 git2r_0.28.0 htmltools_0.5.1.1
[13] yaml_2.2.1 digest_0.6.27 assertthat_0.2.1
[16] crayon_1.4.1 purrr_0.3.4 sass_0.4.0
[19] distill_1.2 glue_1.4.2 evaluate_0.14
[22] rmarkdown_2.11 emo_0.0.0.9000 stringi_1.7.5
[25] compiler_4.0.5 bslib_0.2.5.1 generics_0.1.0
[28] jsonlite_1.7.2 lubridate_1.7.10
hello world↩︎